From: Keir Fraser Date: Tue, 21 Oct 2008 08:48:08 +0000 (+0100) Subject: Add protection for xenpm access power management info X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14066^2~12 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=729577228a17d512bbb95b34452aa0f65c5004f4;p=xen.git Add protection for xenpm access power management info Signed-off-by: Liu Jinsong --- diff --git a/xen/drivers/acpi/pmstat.c b/xen/drivers/acpi/pmstat.c index b3ba34c378..42051d2070 100644 --- a/xen/drivers/acpi/pmstat.c +++ b/xen/drivers/acpi/pmstat.c @@ -52,7 +52,7 @@ int do_get_pm_info(struct xen_sysctl_get_pmstat *op) int ret = 0; const struct processor_pminfo *pmpt; - if ( (op->cpuid >= NR_CPUS) || !cpu_online(op->cpuid) ) + if ( !op || (op->cpuid >= NR_CPUS) || !cpu_online(op->cpuid) ) return -EINVAL; pmpt = processor_pminfo[op->cpuid]; @@ -87,7 +87,7 @@ int do_get_pm_info(struct xen_sysctl_get_pmstat *op) uint64_t tmp_idle_ns; struct pm_px *pxpt = cpufreq_statistic_data[op->cpuid]; - if ( !pxpt ) + if ( !pxpt || !pxpt->u.pt || !pxpt->u.trans_pt ) return -ENODATA; total_idle_ns = get_cpu_idle_time(op->cpuid); diff --git a/xen/drivers/cpufreq/utility.c b/xen/drivers/cpufreq/utility.c index a26e2518c3..b9330c1de2 100644 --- a/xen/drivers/cpufreq/utility.c +++ b/xen/drivers/cpufreq/utility.c @@ -129,7 +129,7 @@ void cpufreq_statistic_reset(unsigned int cpuid) struct pm_px *pxpt = cpufreq_statistic_data[cpuid]; const struct processor_pminfo *pmpt = processor_pminfo[cpuid]; - if ( !pxpt || !pmpt ) + if ( !pmpt || !pxpt || !pxpt->u.pt || !pxpt->u.trans_pt ) return; count = pmpt->perf.state_count;